/*
 * Copyright 2008-2016 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package basilisk.util

import spock.lang.Specification
import spock.lang.Unroll

@Unroll
class ExpandableResourceBundleSpec extends Specification {
    def 'Calling bundle.getObject(#key, #defaultValue) gives #value as result'() {
        given:
        ResourceBundle bundle = ExpandableResourceBundle.wrapResourceBundle(new MapResourceBundle())

        expect:
        value == bundle.getObject(key)

        where:
        key          || value
        'single'     || 'single'
        'key.string' || 'string'
        'key.number' || 'number'
        'key'        || [string: 'string', number: 'number']
    }

    def 'Test wrapping modes'() {
        given:
        ResourceBundle b1 = new MapResourceBundle()
        ResourceBundle b2 = ExpandableResourceBundle.wrapResourceBundle(b1)
        ResourceBundle b3 = ExpandableResourceBundle.wrapResourceBundle(b2)

        expect:
        b2 instanceof ExpandableResourceBundle
        b3 instanceof ExpandableResourceBundle
        b3 == b2
    }
}
